package br.com.senacrs.control;

import br.com.senacrs.dao.DaoFactory;
import br.com.senacrs.dao.EstadoDao;
import br.com.senacrs.model.EstadoEN;
import br.com.senacrs.validation.EstadoVal;
import java.util.List;


public class EstadoCR implements ControlCR<EstadoEN> {

    private EstadoDao dao;
    private EstadoVal validation;
    
    public EstadoCR() {
        this.dao = new DaoFactory().getEstadoDao();
        this.validation = new EstadoVal();
    }
    
    @Override
    public void insert(EstadoEN objeto) {
        this.validation.validateInsert(objeto);
        this.dao.insert(objeto);
    }

    @Override
    public void delete(EstadoEN objeto) {
        this.validation.validateDelete(objeto);
        this.dao.delete(objeto);
    }

    @Override
    public void update(EstadoEN objeto) {
        this.validation.validateUpdate(objeto);
        this.dao.update(objeto);
    }

    @Override
    public List<EstadoEN> selectAll() {
       this.validation.validateSelectAll();
       return this.dao.selectAll();
    }

    @Override
    public List<EstadoEN> selectAllOrderBy(String order) {
        this.validation.validateSelectAllOrderBy(order);
        return this.dao.selectAllOrderBy(order);
    }

    @Override
    public EstadoEN selectOne(Long id) {
        this.validation.validateSelectOne(id);
        return (EstadoEN) this.dao.selectOne(id);
    }

    @Override
    public EstadoEN selectOneGet(Long id) {
        this.validation.validateSelectOneGet(id);
        return (EstadoEN) this.dao.selectOneGet(id);
    }

    @Override
    public List<EstadoEN> selectWhere(String criterio, String string) {
        this.validation.validateSelectWhere(criterio, string);
        return this.dao.selectWhere(criterio, string);
    }

    @Override
    public List<EstadoEN> selectWhere(String criterio, Long valor) {
        this.validation.validateSelectWhere(criterio, valor);
        return this.dao.selectWhere(criterio, valor);
    }

    @Override
    public List<EstadoEN> selectWhere(String criterio, String criterioJoin, Long valor) {
        this.validation.validateSelectWhere(criterio, criterioJoin, valor);
        return this.dao.selectWhere(criterio, criterioJoin, valor);
    }  
}
